#if !defined(ximera_types_hpp)
#define ximera_types_hpp

// -----------------------------------------------------------

#include <ximera/config.hpp>
#include <string>

#include <boost/cstdint.hpp>

#if defined(XIMERA_WIN32)
#include <windows.h>
#endif

namespace ximera
{
    typedef unsigned char Byte;
    
    typedef wchar_t Char;
    typedef std::basic_string<Char> String;

    typedef float Real;

    typedef boost::int8_t Int8;
    typedef boost::uint8_t UInt8;
    typedef boost::int16_t Int16;
    typedef boost::uint16_t UInt16;
    typedef boost::int32_t Int32;
    typedef boost::uint32_t UInt32;
    typedef boost::int64_t Int64;
    typedef boost::uint64_t UInt64;

#if defined(XIMERA_WIN32)
    typedef HMODULE LibraryHandle;
    typedef FARPROC LibraryFunctionAddr;
    typedef HWND WindowHandle;

#else
    typedef void const* LibraryHandle;
    typedef void (*LibraryFunctionAddr)();
    typedef void* WindowHandle;
#endif
}

// -----------------------------------------------------------

#endif